<?php
namespace frontend\models;

use yii;
use yii\base\Model;
use yii\models\User;

class UploadForm extends Model
{
    public $files;  //用来保存文件
    public $path_img;

    public function rules(){
        return [
            [
            ['files'],'file',
            'skipOnEmpty' => false,
            'extensions' => 'jpg, png, gif ,jpeg',
            // 'mimeTypes'=>'image/jpeg, image/png, image/gif',
            'maxSize'=>1024*1024*10,
            'maxFiles'=>4],
            //设置图片的验证规则
        ];
    }

    public function upload(){
        $res = [];
        if ($this->validate()){ //调用验证方法
            //取得上传路径
            $uploadpath = Yii::getAlias('@frontend').'/web/images/';
            if (!file_exists($uploadpath)) {
                @mkdir($uploadpath, 0777, true);
            }
            // $this->getpath();
            // var_dump($this->files); #查看上传的信息
            foreach($this->files as $img){
                // var_dump($img);
                $ext = $img->getExtension();  //获取文件的扩展名
                $randnums = $this->getrandnums(); //生成一个随机数，为了重命名文件
                $imageName = date("YmdHis").$randnums.'.'.$ext;  // 重命名文件
                $filepath = $uploadpath.$imageName;  // 生成文件的绝对路径

                // var_dump($filepath);
                $res[] = $img->saveAs($filepath);    //上传，并保存结果
            }
        }
        return $res; //返回结果
    }

    /**
     * 生成随机数
     * @return string 随机数
     */
    protected function getrandnums()
    {
        $arr = array();
        while (count($arr) < 5) {
            $arr[] = rand(1, 5);
            $arr = array_unique($arr);
        }
        return implode("", $arr);
    }


    //获取文件存储路径
    //multifile_Upload 多文件上传
    public function multifile_Upload(){
        $res=[];
        if($this->validate()){
            $uploadpath = Yii::getAlias('@frontend').'/web/images/'.date('Ymd/',time());
            // var_dump($uploadpath);exit;
            if (!file_exists($uploadpath)) {
                    @mkdir($uploadpath, 0777, true);
            }

            $img_path=[];
            foreach ($this->files as $img) {
                $ext = $img->getExtension();  //获取文件的扩展名
                $randnums = $this->getrandnums(); //生成一个随机数，为了重命名文件
                // $imageName = date("YmdHis").$randnums.'.'.$ext;  // 重命名文件
                $imageName = date("dHi").$randnums.'.'.$ext;  // 重命名文件
                $filepath = $uploadpath.$imageName;  // 生成文件的绝对路径
                $img_path[]=$filepath;
                $res[] = $img->saveAs($filepath);    //上传，并保存结果
            }

            $this->path_img=$img_path;  //把绝对路径扔出去，做截取处理，然后存入数据库
            return $res;
        }
    }

    /**
     * 存储路径
     *
     * 注：
     * 这里做这么多，就是为了把这些存入数据库
     * 如果能够直接得到相对路径，这些东西都用
     *
     */
    public function get_store_path(){
        // $path_img=$this->path_img;
        $p_img=[];
        foreach ($this->path_img as $v_img) {
            $p_img[]=strrchr($v_img, 'images'); # 截取路径的一段，用来存入数据库。
        }

        $p_img=implode(',',$p_img);

        var_dump($p_img);
        // return $p_img;
    }

}
?>